library(plm)
abcpv=pdata.frame(abcpv3, index=c("pais","ano"))

# modelo aleat�rio
abcpRE=plm(proat ~ contleg + democ + supran + alin, 
           data=abcpv, model="random", 
           random.method = "walhus")
summary(abcpRE)


# modelo pooled
abcpvPOLS=plm(proat ~ contleg + democ + supran + alin, 
              data=abcpv, model="pooling", family = "poisson")
summary(abcpvPOLS)

# comparando aleat�rio e pooled
plmtest(abcpvPOLS, type="bp") # melhor o pooled ao aleat (p>0,05)

#testes
library(lmtest)
pcdtest(abcpvPOLS, test="cd") # Testando depend�ncia transversal - OK (>0,05)
bptest(abcpvPOLS) # homocedasticidade - Problema (<0,05)
pbgtest(abcpvPOLS) # correla��o serial dos erros - problema (<0,05)
shapiro.test(abcpvPOLS$residuals) # Normalidade dos res�duos - OK
vif(abcpvPOLS) # ok (<5)

# modelo com erros robustos
POLS <- lmtest::coeftest(abcpvPOLS, vcov = sandwich::vcovHC(abcpvPOLS, type = 'HC4'))
